﻿using Exam.infranstuctrue.Dto.Request.Exam;
using Exam.infranstuctrue.Dto.Respones;
using Exam.infranstuctrue.Tools.Attributes;
namespace Exam.Service.Interface
{
    [IProvider]
    public interface IExamServer
    {
        /// <summary>
        /// 全部考试
        /// </summary>
        /// <param name="uid"></param>
        /// <returns></returns>
        Task<ApiResult> GetTestPage(string uid);
        /// <summary>
        /// 获取课程考试
        /// </summary>
        /// <param name="uid"></param>
        /// <param name="cid"></param>
        /// <returns></returns>
        Task<ApiResult> GetCourseTestPage(string uid, string? token = null);
        /// <summary>
        /// 获取培训班课程
        /// </summary>
        /// <param name="uid"></param>
        /// <param name="tid"></param>
        /// <returns></returns>
        Task<ApiResult> GetTrainingTestPage(string uid, string? token = null);
        /// <summary>
        /// 获取单个试卷
        /// </summary>
        /// <param name="aid"></param>
        /// <returns></returns>
        Task<ApiResult> GetEchoTestPage(string aid);
        /// <summary>
        /// 未考试
        /// </summary>
        /// <param name="uid"></param>
        /// <returns></returns>
        Task<ApiResult> GetNoExam(string uid);
        /// <summary>
        /// 缺考
        /// </summary>
        /// <param name="uid"></param>
        /// <returns></returns>
        Task<ApiResult> GetOverTimeExam(string uid);
        /// <summary>
        /// 已考试
        /// </summary>
        /// <param name="uid"></param>
        /// <returns></returns>
        Task<ApiResult> GetExam(string uid);
        /// <summary>
        /// 考试进行中
        /// </summary>
        /// <param name="uid"></param>
        /// <returns></returns>
        Task<ApiResult> GetExaming(string uid);
        /// <summary>
        /// 开始考试
        /// </summary>
        /// <param name="uid"></param>
        /// <param name="aid"></param>
        /// <returns></returns>
        Task<ApiResult> BeginExam(string uid, string aid);
        /// <summary>
        /// 生成试题
        /// </summary>
        /// <param name="aid"></param>
        /// <returns></returns>
        Task<ApiResult> GetQuestion(string aid);
        /// <summary>
        /// 结束考试
        /// </summary>
        /// <param name="uid"></param>
        /// <param name="aid"></param>
        /// <returns></returns>
        Task<ApiResult> EndExam(TestPageDto dto);
        /// <summary>
        /// 考试详情
        /// </summary>
        /// <param name="aid"></param>
        /// <returns></returns>
        Task<ApiResult> ExamParticulars(string aid);
        /// <summary>
        /// 考试排名
        /// </summary>
        /// <param name="aid"></param>
        /// <returns></returns>
        Task<ApiResult> ExamRanking(string aid, string uid, string? token);
    }
}
